package com.junzhiit.nengji.app.service;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.junzhiit.nengji.app.web.vo.CouponsAddVO;
import com.junzhiit.nengji.app.web.vo.CouponsEditVO;
import com.junzhiit.nengji.app.web.vo.CouponsSearchVO;
import com.junzhiit.nengji.app.web.vo.DataTablesParamVO;
import com.junzhiit.nengji.app.web.vo.ResultVO;


public interface CouponsService {

	/**
	 * 
	 * TODO 获取全部信息
	 * 
	 * @author FebRosy
	 * @time 2018年2月6日 上午9:12:54
	 * @return ResultVO
	 */
	public Map<String, Object> findAll(DataTablesParamVO dtp, CouponsSearchVO couponsVO);

	/**
	 * 
	 * TODO 获得单个商品信息
	 * 
	 * @author FebRosy
	 * @time 2018年2月6日 上午11:29:55
	 * @return ResultVO
	 */
	public ResultVO findById(String id);

	/**
	 * 
	 * TODO 添加优惠卷
	 * 
	 * @author FebRosy
	 * @time 2018年2月5日 下午5:03:45
	 * @return ResultVO
	 */
	public ResultVO add(CouponsAddVO couponsAddVO);

	/**
	 * 
	 * TODO 修改优惠卷
	 * 
	 * @author FebRosy
	 * @time 2018年2月6日 上午11:48:10
	 * @return ResultVO
	 */
	public ResultVO edit(CouponsEditVO couponsEditVO);

	/**
	 * 
	 * TODO 更改优惠卷状态
	 * 
	 * @author FebRosy
	 * @time 2018年2月6日 下午2:14:55
	 * @return ResultVO
	 */
	public ResultVO updateStatus(String id, Integer status);
	
	/**
	 * 
	 * TODO 查询所有优惠券名称
	 * @author Zaki
	 * @time 2018年3月29日 下午2:28:48
	 * @return ResultVO
	 */
	public ResultVO getCouponsList(String sessionId);
	
	/**
	 * 
	 * TODO 使用定时器根据优惠券下架时间修改下架状态
	 * @author Zaki
	 * @time 2018年4月18日 下午7:20:12
	 * @return void
	 */
	public void  soldOutCoupons();
	
	/**
	 * 
	 * TODO 生成优惠券二维码
	 * @author PeterMo
	 * @time 2018年5月29日 下午9:33:33
	 * @return ResultVO
	 */
	public ResultVO createQRCode(String id);
	
	/**
	 * 
	 * TODO 下载二维码
	 * @author PeterMo
	 * @time 2018年5月30日 下午8:46:52
	 * @return void
	 */
	public void downloadQRCode(HttpServletRequest request,HttpServletResponse response,String qrcodeName,String couponsName);
	
	/**
	 * 
	 * TODO 给用户赠送优惠券
	 * @author Zaki
	 * @time 2018年8月14日 下午8:12:48
	 * @return ResultVO
	 */
	public ResultVO insert(String userId, String couponsId);
}
